Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Common uses for flash memory include personal computers, personal digital assistants (PDAs), digital cameras, and cellular telephones. Program code and system data such as a basic input/output system (BIOS) are typically stored in flash memory devices for use in personal computer systems.
A flash memory is a type of memory that can be erased and reprogrammed in blocks instead of one byte at a time. A typical flash memory comprises a memory array, which includes a large number of memory cells. Changes in threshold voltage of the memory cells, through programming of charge storage structures (e.g., floating gates or charge traps) or other physical phenomena (e.g., phase change or polarization), determine the data value of each cell. The cells are usually grouped into memory blocks. Each of the cells within a memory block can be electrically programmed, such as by charging the charge storage structure. The data in a cell of this type is determined by the presence or absence of the charge in the charge storage structure. The charge can be removed from the charge storage structure by an erase operation.
There may be times when a manufacturer and/or user of a memory device might want to protect certain areas of memory by locking them so that they can be neither programmed nor erased. For example, manufacturers typically designate a certain memory block (e.g., block 0) of a non-volatile memory device as a Boot ROM area of memory in which the computer's basic input/output system (BIOS) is stored. This area of memory can then be protected from accidental erase and programming by setting the protection data.
Memory block protection is typically accomplished by programming all logical 0's to an entire page, of the designated Boot ROM portion, that is indicative of the memory block being protected. For example, if memory block 0 is to be protected from program/erase, the entire page 0 of the Boot ROM is programmed with logical 0's. If memory block 1 is to be protected, logical 0's are programmed to the entire page 1 of the Boot ROM.
Another way to program memory block protection is to program all logical 0's in one of four partial pages. For example, if memory block 0 is to be protected, all logical 0's are programmed into partial page 0 of page 0. If memory block 1 is to be protected, all logical 0's are programmed into partial page 1 of page 0.
The memory block protection data is read by a normal memory read operation at power-up of the memory device. Such a read operation only reads protection data for a limited number of blocks. For example, one page read operation reads protection data for four memory blocks. Thus, in order to read protection data for 16 memory blocks, four pages are read. If each page read operation is accomplished in a typical 125 μs, it might take 500 μs to read the four pages. If 32 or more memory blocks are protected, the read time to read the protection data at power-up could surpass a typical 1 ms limit to accomplish the power-up.
For the reasons stated above, and for other reasons stated below that will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a better way to store and detect protection data for particular memory blocks.